39#ifdef PREINIT_SUPPORTED
43#ifdef MikroCCoreVersion
44 #if MikroCCoreVersion >= 1
49#include "drv_digital_out.h"
50#include "drv_digital_in.h"
51#include "drv_i2c_master.h"
73#define C3DHALL15I2C_REG_NOP 0x00
74#define C3DHALL15I2C_REG_INDIRECT_WR_ADDRESS 0x02
75#define C3DHALL15I2C_REG_INDIRECT_WR_DATA_MSB 0x04
76#define C3DHALL15I2C_REG_INDIRECT_WR_DATA_LSB 0x06
77#define C3DHALL15I2C_REG_INDIRECT_WR_STATUS 0x08
78#define C3DHALL15I2C_REG_INDIRECT_RD_ADDRESS 0x0A
79#define C3DHALL15I2C_REG_INDIRECT_RD_STATUS 0x0C
80#define C3DHALL15I2C_REG_INDIRECT_RD_DATA_MSB 0x0E
81#define C3DHALL15I2C_REG_INDIRECT_RD_DATA_LSB 0x10
82#define C3DHALL15I2C_REG_I2C_LOOP_BACK 0x12
83#define C3DHALL15I2C_REG_I2C_X_Y_8B 0x14
84#define C3DHALL15I2C_REG_I2C_T_Z_8B 0x16
85#define C3DHALL15I2C_REG_I2C_ANGLE_RADIUSSQ_8B 0x18
86#define C3DHALL15I2C_REG_I2C_SIN_COS_8B 0x1A
87#define C3DHALL15I2C_REG_TEMPERATURE 0x1C
88#define C3DHALL15I2C_REG_X_CHANNEL 0x1E
89#define C3DHALL15I2C_REG_Y_CHANNEL 0x20
90#define C3DHALL15I2C_REG_Z_CHANNEL 0x22
91#define C3DHALL15I2C_REG_ANGLE 0x24
92#define C3DHALL15I2C_REG_RADIUS 0x26
93#define C3DHALL15I2C_REG_SINE 0x28
94#define C3DHALL15I2C_REG_COSINE 0x2A
95#define C3DHALL15I2C_REG_X_RAW_FILT_OUT 0x2C
96#define C3DHALL15I2C_REG_Y_RAW_FILT_OUT 0x2E
97#define C3DHALL15I2C_REG_Z_RAW_FILT_OUT 0x30
98#define C3DHALL15I2C_REG_CTRL1 0x32
99#define C3DHALL15I2C_REG_I2C_LOOPB_CONF 0x34
100#define C3DHALL15I2C_REG_CTRL2 0x36
101#define C3DHALL15I2C_REG_CTRL3 0x38
102#define C3DHALL15I2C_REG_CTRL4 0x3A
103#define C3DHALL15I2C_REG_RESERVED 0x3C
104#define C3DHALL15I2C_REG_ACCESS_KEY 0x3E
122#define C3DHALL15I2C_CTRL1_START_SAMPLE_CLEAR 0x0000
123#define C3DHALL15I2C_CTRL1_START_SAMPLE_SET 0x1000
124#define C3DHALL15I2C_CTRL1_START_SAMPLE_MASK 0x1000
125#define C3DHALL15I2C_CTRL1_INTERRUPT_FLAG_CLEAR 0x0000
126#define C3DHALL15I2C_CTRL1_INTERRUPT_FLAG_SET 0x0800
127#define C3DHALL15I2C_CTRL1_INTERRUPT_FLAG_MASK 0x0800
128#define C3DHALL15I2C_CTRL1_STATUS_READY_CLEAR 0x0000
129#define C3DHALL15I2C_CTRL1_STATUS_READY_SET 0x0400
130#define C3DHALL15I2C_CTRL1_STATUS_READY_MASK 0x0400
131#define C3DHALL15I2C_CTRL1_SLEEP_CNT_0_68_MS 0x0000
132#define C3DHALL15I2C_CTRL1_SLEEP_CNT_1_36_MS 0x0010
133#define C3DHALL15I2C_CTRL1_SLEEP_CNT_6_82_MS 0x0020
134#define C3DHALL15I2C_CTRL1_SLEEP_CNT_13_64_MS 0x0030
135#define C3DHALL15I2C_CTRL1_SLEEP_CNT_68_18_MS 0x0040
136#define C3DHALL15I2C_CTRL1_SLEEP_CNT_136_36_MS 0x0050
137#define C3DHALL15I2C_CTRL1_SLEEP_CNT_681_82_MS 0x0060
138#define C3DHALL15I2C_CTRL1_SLEEP_CNT_1363_64_MS 0x0070
139#define C3DHALL15I2C_CTRL1_SLEEP_CNT_MASK 0x0070
140#define C3DHALL15I2C_CTRL1_OP_MODE_ACTIVE 0x0000
141#define C3DHALL15I2C_CTRL1_OP_MODE_ACTIVE_INT 0x0002
142#define C3DHALL15I2C_CTRL1_OP_MODE_ACTIVE_SAM 0x0004
143#define C3DHALL15I2C_CTRL1_OP_MODE_SLEEP 0x0006
144#define C3DHALL15I2C_CTRL1_OP_MODE_SLEEP_SAM 0x0008
145#define C3DHALL15I2C_CTRL1_OP_MODE_LPDCM_INT 0x000A
146#define C3DHALL15I2C_CTRL1_OP_MODE_LPDCM 0x000C
147#define C3DHALL15I2C_CTRL1_OP_MODE_MASK 0x000E
153#define C3DHALL15I2C_CTRL2_INT_THR_MSB_DIR_MASK 0x0F00
154#define C3DHALL15I2C_CTRL2_INT_THR_LSB_DIR_MASK 0x00FF
160#define C3DHALL15I2C_CTRL3_AFE_CHAN_DIS_Z_DIR_EN 0x0000
161#define C3DHALL15I2C_CTRL3_AFE_CHAN_DIS_Z_DIR_DIS 0x2000
162#define C3DHALL15I2C_CTRL3_AFE_CHAN_DIS_Z_DIR_MASK 0x2000
163#define C3DHALL15I2C_CTRL3_AFE_CHAN_DIS_Y_DIR_EN 0x0000
164#define C3DHALL15I2C_CTRL3_AFE_CHAN_DIS_Y_DIR_DIS 0x1000
165#define C3DHALL15I2C_CTRL3_AFE_CHAN_DIS_Y_DIR_MASK 0x1000
166#define C3DHALL15I2C_CTRL3_AFE_CHAN_DIS_X_DIR_EN 0x0000
167#define C3DHALL15I2C_CTRL3_AFE_CHAN_DIS_X_DIR_DIS 0x0800
168#define C3DHALL15I2C_CTRL3_AFE_CHAN_DIS_X_DIR_MASK 0x0800
169#define C3DHALL15I2C_CTRL3_POL_F_Z_DIR_NORMAL 0x0000
170#define C3DHALL15I2C_CTRL3_POL_F_Z_DIR_INVERTED 0x0400
171#define C3DHALL15I2C_CTRL3_POL_F_Z_DIR_MASK 0x0400
172#define C3DHALL15I2C_CTRL3_POL_F_Y_DIR_NORMAL 0x0000
173#define C3DHALL15I2C_CTRL3_POL_F_Y_DIR_INVERTED 0x0200
174#define C3DHALL15I2C_CTRL3_POL_F_Y_DIR_MASK 0x0200
175#define C3DHALL15I2C_CTRL3_POL_F_X_DIR_NORMAL 0x0000
176#define C3DHALL15I2C_CTRL3_POL_F_X_DIR_INVERTED 0x0100
177#define C3DHALL15I2C_CTRL3_POL_F_X_DIR_MASK 0x0100
178#define C3DHALL15I2C_CTRL3_INT_SEL_DIR_X 0x0000
179#define C3DHALL15I2C_CTRL3_INT_SEL_DIR_Y 0x0008
180#define C3DHALL15I2C_CTRL3_INT_SEL_DIR_Z 0x0010
181#define C3DHALL15I2C_CTRL3_INT_SEL_DIR_ABS_X 0x0018
182#define C3DHALL15I2C_CTRL3_INT_SEL_DIR_ABS_Y 0x0020
183#define C3DHALL15I2C_CTRL3_INT_SEL_DIR_ABS_Z 0x0028
184#define C3DHALL15I2C_CTRL3_INT_SEL_DIR_TEMP 0x0030
185#define C3DHALL15I2C_CTRL3_INT_SEL_DIR_ANGLE 0x0038
186#define C3DHALL15I2C_CTRL3_INT_SEL_DIR_RADIUS 0x0040
187#define C3DHALL15I2C_CTRL3_INT_SEL_DIR_NEW_SAMPLE 0x0048
188#define C3DHALL15I2C_CTRL3_INT_SEL_DIR_MASK 0x0078
189#define C3DHALL15I2C_CTRL3_INT_SIGN_DIR_LESS 0x0000
190#define C3DHALL15I2C_CTRL3_INT_SIGN_DIR_GREATER 0x0004
191#define C3DHALL15I2C_CTRL3_INT_SIGN_DIR_MASK 0x0004
192#define C3DHALL15I2C_CTRL3_INT_FLAG_LATCH_DIR_DIS 0x0000
193#define C3DHALL15I2C_CTRL3_INT_FLAG_LATCH_DIR_EN 0x0002
194#define C3DHALL15I2C_CTRL3_INT_FLAG_LATCH_DIR_MASK 0x0002
195#define C3DHALL15I2C_CTRL3_SAMPLE_INT_POL_DIR_LOW 0x0001
196#define C3DHALL15I2C_CTRL3_SAMPLE_INT_POL_DIR_HIGH 0x0001
197#define C3DHALL15I2C_CTRL3_SAMPLE_INT_POL_DIR_MASK 0x0001
203#define C3DHALL15I2C_CTRL4_CIC_BW_SEL_LPM_DIR_195_5_HZ 0x0000
204#define C3DHALL15I2C_CTRL4_CIC_BW_SEL_LPM_DIR_391_HZ 0x0100
205#define C3DHALL15I2C_CTRL4_CIC_BW_SEL_LPM_DIR_782_HZ 0x0200
206#define C3DHALL15I2C_CTRL4_CIC_BW_SEL_LPM_DIR_1564_HZ 0x0300
207#define C3DHALL15I2C_CTRL4_CIC_BW_SEL_LPM_DIR_3128_HZ 0x0400
208#define C3DHALL15I2C_CTRL4_CIC_BW_SEL_LPM_DIR_6256_HZ 0x0500
209#define C3DHALL15I2C_CTRL4_CIC_BW_SEL_LPM_DIR_12512_HZ 0x0600
210#define C3DHALL15I2C_CTRL4_CIC_BW_SEL_LPM_DIR_MASK 0x0700
211#define C3DHALL15I2C_CTRL4_CIC_BW_SEL_DIR_195_5_HZ 0x0000
212#define C3DHALL15I2C_CTRL4_CIC_BW_SEL_DIR_391_HZ 0x0010
213#define C3DHALL15I2C_CTRL4_CIC_BW_SEL_DIR_782_HZ 0x0020
214#define C3DHALL15I2C_CTRL4_CIC_BW_SEL_DIR_1564_HZ 0x0030
215#define C3DHALL15I2C_CTRL4_CIC_BW_SEL_DIR_3128_HZ 0x0040
216#define C3DHALL15I2C_CTRL4_CIC_BW_SEL_DIR_6256_HZ 0x0050
217#define C3DHALL15I2C_CTRL4_CIC_BW_SEL_DIR_12512_HZ 0x0060
218#define C3DHALL15I2C_CTRL4_CIC_BW_SEL_DIR_MASK 0x0070
219#define C3DHALL15I2C_CTRL4_CORDIC_POL_DIR_NORMAL 0x0000
220#define C3DHALL15I2C_CTRL4_CORDIC_POL_DIR_INVERTED 0x0008
221#define C3DHALL15I2C_CTRL4_CORDIC_POL_DIR_MASK 0x0008
222#define C3DHALL15I2C_CTRL4_CORDIC_SEL_DIR_COS_X_SINE_Y 0x0000
223#define C3DHALL15I2C_CTRL4_CORDIC_SEL_DIR_COS_X_SINE_Z 0x0001
224#define C3DHALL15I2C_CTRL4_CORDIC_SEL_DIR_COS_Y_SINE_Z 0x0002
225#define C3DHALL15I2C_CTRL4_CORDIC_SEL_DIR_COS_Y_SINE_X 0x0003
226#define C3DHALL15I2C_CTRL4_CORDIC_SEL_DIR_COS_Z_SINE_X 0x0004
227#define C3DHALL15I2C_CTRL4_CORDIC_SEL_DIR_COS_Z_SINE_Y 0x0005
228#define C3DHALL15I2C_CTRL4_CORDIC_SEL_DIR_MASK 0x0007
234#define C3DHALL15I2C_TEMP_SIGN_BIT 0x0800
235#define C3DHALL15I2C_TEMP_SIGN_MASK 0xF000
236#define C3DHALL15I2C_TEMP_RES 8.052
237#define C3DHALL15I2C_TEMP_OFFSET 25.0
238#define C3DHALL15I2C_XYZ_SIGN_BIT 0x4000
239#define C3DHALL15I2C_XYZ_SIGN_MASK 0x8000
240#define C3DHALL15I2C_XYZ_RES_MT 268.0
241#define C3DHALL15I2C_ANGLE_RES_DEG 0.0109863
248#define C3DHALL15I2C_DEVICE_ADDRESS 0x65
266#define C3DHALL15I2C_MAP_MIKROBUS( cfg, mikrobus ) \
267 cfg.scl = MIKROBUS( mikrobus, MIKROBUS_SCL ); \
268 cfg.sda = MIKROBUS( mikrobus, MIKROBUS_SDA ); \
269 cfg.sample = MIKROBUS( mikrobus, MIKROBUS_PWM ); \
270 cfg.int_pin = MIKROBUS( mikrobus, MIKROBUS_INT )
c3dhall15i2c_return_value_t
3D Hall 15 I2C Click return value data.
Definition c3dhall15i2c.h:332
@ C3DHALL15I2C_ERROR
Definition c3dhall15i2c.h:334
@ C3DHALL15I2C_OK
Definition c3dhall15i2c.h:333
@ C3DHALL15I2C_DATA_NOT_READY
Definition c3dhall15i2c.h:335
err_t c3dhall15i2c_init(c3dhall15i2c_t *ctx, c3dhall15i2c_cfg_t *cfg)
3D Hall 15 I2C initialization function.
void c3dhall15i2c_cfg_setup(c3dhall15i2c_cfg_t *cfg)
3D Hall 15 I2C configuration object setup function.
err_t c3dhall15i2c_write_reg(c3dhall15i2c_t *ctx, uint8_t reg, uint16_t data_in)
3D Hall 15 I2C write register function.
err_t c3dhall15i2c_read_reg(c3dhall15i2c_t *ctx, uint8_t reg, uint16_t *data_out)
3D Hall 15 I2C read register function.
uint8_t c3dhall15i2c_get_int_pin(c3dhall15i2c_t *ctx)
3D Hall 15 I2C get INT pin function.
err_t c3dhall15i2c_default_cfg(c3dhall15i2c_t *ctx)
3D Hall 15 I2C default configuration function.
void c3dhall15i2c_set_sample_pin(c3dhall15i2c_t *ctx, uint8_t state)
3D Hall 15 I2C set sample pin function.
void c3dhall15i2c_start_measurement(c3dhall15i2c_t *ctx)
3D Hall 15 I2C start measurement function.
err_t c3dhall15i2c_read_data(c3dhall15i2c_t *ctx, c3dhall15i2c_data_t *data_out)
3D Hall 15 I2C read data function.
3D Hall 15 I2C Click configuration object.
Definition c3dhall15i2c.h:300
pin_name_t sample
Definition c3dhall15i2c.h:304
uint32_t i2c_speed
Definition c3dhall15i2c.h:307
pin_name_t scl
Definition c3dhall15i2c.h:301
pin_name_t int_pin
Definition c3dhall15i2c.h:305
pin_name_t sda
Definition c3dhall15i2c.h:302
uint8_t i2c_address
Definition c3dhall15i2c.h:308
3D Hall 15 I2C Click data object.
Definition c3dhall15i2c.h:317
float magnitude
Definition c3dhall15i2c.h:323
float y
Definition c3dhall15i2c.h:320
float angle
Definition c3dhall15i2c.h:322
float x
Definition c3dhall15i2c.h:319
float z
Definition c3dhall15i2c.h:321
float temperature
Definition c3dhall15i2c.h:318
3D Hall 15 I2C Click context object.
Definition c3dhall15i2c.h:280
digital_out_t sample
Definition c3dhall15i2c.h:282
digital_in_t int_pin
Definition c3dhall15i2c.h:285
i2c_master_t i2c
Definition c3dhall15i2c.h:288
uint8_t slave_address
Definition c3dhall15i2c.h:291